package com.radiant.data.annotation;

import java.lang.reflect.Method;

import com.radiant.data.entity.GenericDAO;

public interface PreProcessor {

	public abstract void register(Class<?> clazz, Class<? extends GenericDAO<?>> daoClazz);

	public abstract void run();

	public abstract boolean isFieldComplex(
			Class<?> clazz, String fieldName);

	public abstract boolean isFieldMultiValue(
			Class<?> clazz, String fieldName);

	public abstract Class<?> getMultiValueComponentType(
			Class<?> clazz, String fieldName);

	public abstract String getFieldNameForAttribName(
			Class<?> clazz, String attribName);

	public abstract Method getFieldReadMethod(
			Class<?> clazz, String fieldName);

	public abstract Method getItemReadMethod(Class<?> clazz);

	public abstract String getItemName(Class<?> clazz);

	public Class<? extends GenericDAO<?>> getDAOClass(Class<?> clazz);

}